/**
 * ReportGear(2011)
 */
package com.reportgear.report.view.grid.editor;

import java.awt.Component;

import com.reportgear.report.model.cell.Cell;
import com.reportgear.report.view.grid.Grid;

/**
 * 单元格编辑器接口
 * 
 * @version 1.0 2011-3-18
 * @author <a herf="lexloo@gmail.com">lexloo</a>
 * @since report 1.0
 */
public interface CellEditor {
	/**
	 * 获取单元格编辑值
	 * 
	 * @return 编辑值
	 * @throws Exception
	 *             异常
	 */
	public Object getCellEditorValue();

	/**
	 * 获取单元格对应控件
	 * 
	 * @param grid
	 *            网格
	 * @param cell
	 *            单元格对象
	 * @return 控件
	 */
	public Component getCellEditorComponent(Grid grid, Cell cell);

	/**
	 * 停止单元格编辑
	 * 
	 * @return 停止编辑成功与否
	 */
	public boolean stopCellEditing();

	/**
	 * 取消单元格编辑
	 */
	public void cancelCellEditing();

	/**
	 * 增加单元格编辑器监听者
	 * 
	 * @param listener
	 *            监听器
	 */
	public void addCellEditorListener(CellEditorListener listener);

	/**
	 * 移除单元格编辑器监听器
	 * 
	 * @param listener
	 *            监听器
	 */
	public void removeCellEditorListener(CellEditorListener listener);
}
